The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Computing and electronic devices often include various types of memory for storing data of operating systems, applications, or user files. Before an operating system and applications are run on the device, however, low-level code is used to configure and boot the device. When booting a device, the low-level code is typically copied from one of the memories and executed by a processor in order to configure the components of the device for operation. The memory storing the low-level code is often a non-volatile memory, from which the low-level code is copied into another memory prior to execution. Due to recent advances in memory-controller technology, this low-level code may be streamed to the other memory with minimal initialization or overhead, which may increase a speed at which the device boots.
Memory controllers capable of streaming the low-level code from the non-volatile memory, however, stream the low-level code to contiguous locations of the other memory. This other memory, however, may not have enough capacity to receive all of the low-level code or be a memory from which execution of some of the low-level code is not optimal. Accordingly, some partial solutions prevent streaming until the memory controller is fully initialized. Waiting until the memory controller is fully initialized, however, often consumes considerable time and processing resources, which results in slower device boot times.